/*
 * @Author: Yuluo 568055454@qq.com
 * @Date: 2023年06月17日 01:25:47
 * @LastEditors: Yuluo 568055454@qq.com
 * @LastEditTime: 2023年06月24日 15:52:28
 * @FilePath: \Mood-Blog-System\back\middlewares\ResponseLogMiddleware\index.js
 * @Description:  响应日志中间件，用于记录响应日志，包括响应时间，响应状态码，响应数据等
 * Copyright (c) 2023 by Yuluo, All Rights Reserved. 
 */
async function responseLogMiddleware(ctx, next) {
    const logData = require('../../util/log4js').responseLogTemplate(ctx);
    require('../../log4')('response').info(logData);

    // 如果是用户模型，过滤掉密码和手机号
    // try {
    //     if ([1, 200].includes(ctx?.body?.code) && ctx.model.modeName === 'User') {
    //         // let data = { ...ctx.body?.data?.dataValues };
    //         // if (Array.isArray(ctx.body.data)) {
    //         //     data = ctx.body.data.map(item => ({ ...item.dataValues }))
    //         // }
    //         // ctx.body.data = filterResData(data, ['password', 'phone']);
    //     }
    // } catch (error) {
    // }finally{
    //     await next();
    // }
    await next();
}

function filterResData(data, field) {
    try {
        if (Array.isArray(data)) {
            for (let i = 0; i < data.length; i++) {
                field.forEach(item => data[i].hasOwnProperty(item) && delete data[i][item])
            }
        } else {
            field.forEach(item => data.hasOwnProperty(item) && delete data[item])
        }
    } catch (error) {
    } finally {
        return data;
    }
}

module.exports = responseLogMiddleware;